package com.wuchao.mapper;

import com.wuchao.entity.User;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Map;

/**
 * @Author wuchao66
 * @Date 2022/6/27 15:29
 * @Version 1.0
 */
@Service("UserMapper")
public interface UserMapper {//orm映射的接口类型
    //sql动态
    List<User> findUserBySql(@Param("id") int id, @Param("name") String name);
    List<User> findUserBySql1(@Param("id") int id, @Param("name") String name);


    //分页的信息
    List<User> findUserList();
    int deleteUserById(int id);
    //方法11对应
    //返回值 方法名 （入参）方法体
    List<User> findUserByName(String name);
    List<User> findUserByUserName(User user);
    //修改
    int updateUserNameById(@Param("id") int id,@Param("name") String name);
//官网增加
    @Insert("insert user(name,sex) values(#{name},#{sex})")
    int insertUser(@Param("name")String name,@Param("sex")String sex);
    //映射
    int saveUser(User user);
    //删除 mapper不支持重载
    int deleteUserBySerializedId(@Param("id") int id);
    //修改
    int updateUserByUser(User user);
    //查
    List<User> findUserListByName(@Param("name") String name);
    //查 入参是map
    List<User> findUserListByMap(Map map);
    //result map借用现有的全部
    List<User> findTypeList();
    //result map借用现有的一半，2个表还是够用
    List<User> findUserAndTypeList();
    //result map借用现有的一半，2个表还是不够用 --内连
    List<User> findUserAndStuList();

    //result map借用现有的一半，2个表还是不够用 --外连
    List<User> findUserAndStuListLeft();

    //map入参
    List<User> selectUserListByMap(Map map);
    List<User> selectUserListByArray(int [] ids);//根据数组id值来in查询
    List<User> selectUserListByList(List<String> list);//根据listname值来in查询
    List<User> selectUserListByMapListNames(Map<String,List<String>> map);//根据Maplist值来in查询
}
